home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / plaf / basic / BasicOptionPaneUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  12.3 KB  |  514 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Dimension;
  7. import java.awt.GridBagConstraints;
  8. import java.awt.GridBagLayout;
  9. import java.awt.Insets;
  10. import java.awt.LayoutManager;
  11. import java.awt.event.ActionListener;
  12. import java.beans.PropertyChangeListener;
  13. import javax.swing.AbstractButton;
  14. import javax.swing.Box;
  15. import javax.swing.BoxLayout;
  16. import javax.swing.Icon;
  17. import javax.swing.JButton;
  18. import javax.swing.JComboBox;
  19. import javax.swing.JComponent;
  20. import javax.swing.JLabel;
  21. import javax.swing.JList;
  22. import javax.swing.JOptionPane;
  23. import javax.swing.JPanel;
  24. import javax.swing.JRootPane;
  25. import javax.swing.JScrollPane;
  26. import javax.swing.JTextField;
  27. import javax.swing.KeyStroke;
  28. import javax.swing.LookAndFeel;
  29. import javax.swing.SwingUtilities;
  30. import javax.swing.UIManager;
  31. import javax.swing.plaf.ComponentUI;
  32. import javax.swing.plaf.OptionPaneUI;
  33. import javax.swing.text.JTextComponent;
  34.  
  35. public class BasicOptionPaneUI extends OptionPaneUI {
  36.    public static final int MinimumWidth = 262;
  37.    public static final int MinimumHeight = 90;
  38.    protected JOptionPane optionPane;
  39.    protected Dimension minimumSize;
  40.    protected JComponent inputComponent;
  41.    protected Component initialFocusComponent;
  42.    protected boolean hasCustomComponents;
  43.    protected PropertyChangeListener propertyChangeListener;
  44.  
  45.    protected void addButtonComponents(Container var1, Object[] var2, int var3) {
  46.       if (var2 != null && var2.length > 0) {
  47.          boolean var4 = this.getSizeButtonsToSameWidth();
  48.          boolean var5 = true;
  49.          int var6 = var2.length;
  50.          JButton[] var7 = null;
  51.          int var8 = 0;
  52.          if (var4) {
  53.             var7 = new JButton[var6];
  54.          }
  55.  
  56.          for(int var9 = 0; var9 < var6; ++var9) {
  57.             Object var10 = var2[var9];
  58.             Object var11;
  59.             if (var10 instanceof Component) {
  60.                var5 = false;
  61.                var11 = (Component)var10;
  62.                var1.add((Component)var11);
  63.                this.hasCustomComponents = true;
  64.             } else {
  65.                JButton var12;
  66.                if (var10 instanceof Icon) {
  67.                   var12 = new JButton((Icon)var10);
  68.                } else {
  69.                   var12 = new JButton(var10.toString());
  70.                }
  71.  
  72.                var1.add(var12);
  73.                ActionListener var13 = this.createButtonActionListener(var9);
  74.                if (var13 != null) {
  75.                   ((AbstractButton)var12).addActionListener(var13);
  76.                }
  77.  
  78.                var11 = var12;
  79.             }
  80.  
  81.             if (var4 && var5 && var11 instanceof JButton) {
  82.                var7[var9] = (JButton)var11;
  83.                var8 = Math.max(var8, ((Component)var11).getMinimumSize().width);
  84.             }
  85.  
  86.             if (var9 == var3) {
  87.                this.initialFocusComponent = (Component)var11;
  88.                if (this.initialFocusComponent instanceof JButton) {
  89.                   JButton var16 = (JButton)this.initialFocusComponent;
  90.                   ((JComponent)var16).addAncestorListener(new 6());
  91.                }
  92.             }
  93.          }
  94.  
  95.          ((ButtonAreaLayout)var1.getLayout()).setSyncAllWidths(var4 && var5);
  96.          if (var4 && var5) {
  97.             int var15 = var6 <= 2 ? 8 : 4;
  98.  
  99.             for(int var17 = 0; var17 < var6; ++var17) {
  100.                JButton var14 = var7[var17];
  101.                ((AbstractButton)var14).setMargin(new Insets(2, var15, 2, var15));
  102.             }
  103.          }
  104.       }
  105.  
  106.    }
  107.  
  108.    protected void addIcon(Container var1) {
  109.       Icon var2 = this.getIcon();
  110.       if (var2 != null) {
  111.          JLabel var3 = new JLabel(var2);
  112.          var3.setVerticalAlignment(1);
  113.          var1.add(var3, "West");
  114.       }
  115.  
  116.    }
  117.  
  118.    protected void addMessageComponents(Container var1, GridBagConstraints var2, Object var3, int var4, boolean var5) {
  119.       if (var3 != null) {
  120.          if (var3 instanceof Component) {
  121.             var2.fill = 2;
  122.             var2.weightx = (double)1.0F;
  123.             var1.add((Component)var3, var2);
  124.             var2.weightx = (double)0.0F;
  125.             var2.fill = 0;
  126.             ++var2.gridy;
  127.             if (!var5) {
  128.                this.hasCustomComponents = true;
  129.             }
  130.          } else if (var3 instanceof Object[]) {
  131.             Object[] var6 = var3;
  132.  
  133.             for(int var7 = 0; var7 < var6.length; ++var7) {
  134.                this.addMessageComponents(var1, var2, var6[var7], var4, false);
  135.             }
  136.          } else if (var3 instanceof Icon) {
  137.             JLabel var10 = new JLabel((Icon)var3, 0);
  138.             ((JComponent)var10).setForeground(UIManager.getColor("OptionPane.messageForeground"));
  139.             this.addMessageComponents(var1, var2, var10, var4, true);
  140.          } else {
  141.             String var11 = var3.toString();
  142.             int var12 = var11.length();
  143.             if (var12 <= 0) {
  144.                return;
  145.             }
  146.  
  147.             int var8 = var11.indexOf(10);
  148.             if (var8 >= 0) {
  149.                if (var8 == 0) {
  150.                   this.addMessageComponents(var1, var2, new 5(), var4, true);
  151.                } else {
  152.                   this.addMessageComponents(var1, var2, var11.substring(0, var8), var4, false);
  153.                }
  154.  
  155.                this.addMessageComponents(var1, var2, var11.substring(var8 + 1), var4, false);
  156.             } else if (var12 > var4) {
  157.                Box var9 = Box.createVerticalBox();
  158.                this.burstStringInto(var9, var11, var4);
  159.                this.addMessageComponents(var1, var2, var9, var4, true);
  160.             } else {
  161.                JLabel var13 = new JLabel(var11, 2);
  162.                ((JComponent)var13).setForeground(UIManager.getColor("OptionPane.messageForeground"));
  163.                this.addMessageComponents(var1, var2, var13, var4, true);
  164.             }
  165.          }
  166.  
  167.       }
  168.    }
  169.  
  170.    protected void burstStringInto(Container var1, String var2, int var3) {
  171.       int var4 = var2.length();
  172.       if (var4 > 0) {
  173.          if (var4 > var3) {
  174.             int var5 = var2.lastIndexOf(32, var3);
  175.             if (var5 <= 0) {
  176.                var5 = var2.indexOf(32, var3);
  177.             }
  178.  
  179.             if (var5 > 0 && var5 < var4) {
  180.                this.burstStringInto(var1, var2.substring(0, var5), var3);
  181.                this.burstStringInto(var1, var2.substring(var5 + 1), var3);
  182.                return;
  183.             }
  184.          }
  185.  
  186.          JLabel var6 = new JLabel(var2, 2);
  187.          ((JComponent)var6).setForeground(UIManager.getColor("OptionPane.messageForeground"));
  188.          var1.add(var6);
  189.       }
  190.    }
  191.  
  192.    public boolean containsCustomComponents(JOptionPane var1) {
  193.       return this.hasCustomComponents;
  194.    }
  195.  
  196.    protected ActionListener createButtonActionListener(int var1) {
  197.       return new ButtonActionListener(this, var1);
  198.    }
  199.  
  200.    protected Container createButtonArea() {
  201.       JPanel var1 = new JPanel();
  202.       ((JComponent)var1).setBorder(UIManager.getBorder("OptionPane.buttonAreaBorder"));
  203.       ((Container)var1).setLayout(new ButtonAreaLayout(true, 6));
  204.       this.addButtonComponents(var1, this.getButtons(), this.getInitialValueIndex());
  205.       return var1;
  206.    }
  207.  
  208.    protected LayoutManager createLayoutManager() {
  209.       return new BoxLayout(this.optionPane, 1);
  210.    }
  211.  
  212.    protected Container createMessageArea() {
  213.       JPanel var1 = new JPanel();
  214.       ((JComponent)var1).setBorder(UIManager.getBorder("OptionPane.messageAreaBorder"));
  215.       ((Container)var1).setLayout(new BorderLayout());
  216.       2 var2 = new 2();
  217.       3 var3 = new 3();
  218.       4 var4 = new 4();
  219.       ((Container)var3).setLayout(new BorderLayout());
  220.       ((Container)var3).add(var4, "West");
  221.       ((Container)var3).add(var2, "Center");
  222.       ((Container)var2).setLayout(new GridBagLayout());
  223.       GridBagConstraints var5 = new GridBagConstraints();
  224.       var5.gridx = var5.gridy = 0;
  225.       var5.gridwidth = 0;
  226.       var5.gridheight = 1;
  227.       var5.anchor = 17;
  228.       var5.insets = new Insets(0, 0, 3, 0);
  229.       this.addMessageComponents(var2, var5, this.getMessage(), this.getMaxCharactersPerLineCount(), false);
  230.       ((Container)var1).add(var3, "Center");
  231.       this.addIcon(var1);
  232.       return var1;
  233.    }
  234.  
  235.    protected PropertyChangeListener createPropertyChangeListener() {
  236.       return new PropertyChangeHandler(this);
  237.    }
  238.  
  239.    protected Container createSeparator() {
  240.       return null;
  241.    }
  242.  
  243.    public static ComponentUI createUI(JComponent var0) {
  244.       return new BasicOptionPaneUI();
  245.    }
  246.  
  247.    protected Object[] getButtons() {
  248.       if (this.optionPane != null) {
  249.          Object[] var1 = this.optionPane.getOptions();
  250.          if (var1 == null) {
  251.             int var3 = this.optionPane.getOptionType();
  252.             String[] var2;
  253.             if (var3 == 0) {
  254.                var2 = new String[]{(String)UIManager.get("OptionPane.yesButtonText"), (String)UIManager.get("OptionPane.noButtonText")};
  255.             } else if (var3 == 1) {
  256.                var2 = new String[]{(String)UIManager.get("OptionPane.yesButtonText"), (String)UIManager.get("OptionPane.noButtonText"), (String)UIManager.get("OptionPane.cancelButtonText")};
  257.             } else if (var3 == 2) {
  258.                var2 = new String[]{(String)UIManager.get("OptionPane.okButtonText"), (String)UIManager.get("OptionPane.cancelButtonText")};
  259.             } else {
  260.                var2 = new String[]{(String)UIManager.get("OptionPane.okButtonText")};
  261.             }
  262.  
  263.             return var2;
  264.          } else {
  265.             return var1;
  266.          }
  267.       } else {
  268.          return null;
  269.       }
  270.    }
  271.  
  272.    protected Icon getIcon() {
  273.       Icon var1 = this.optionPane == null ? null : this.optionPane.getIcon();
  274.       if (var1 == null && this.optionPane != null) {
  275.          var1 = this.getIconForType(this.optionPane.getMessageType());
  276.       }
  277.  
  278.       return var1;
  279.    }
  280.  
  281.    protected Icon getIconForType(int var1) {
  282.       if (var1 >= 0 && var1 <= 3) {
  283.          switch (var1) {
  284.             case 0:
  285.                return UIManager.getIcon("OptionPane.errorIcon");
  286.             case 1:
  287.                return UIManager.getIcon("OptionPane.informationIcon");
  288.             case 2:
  289.                return UIManager.getIcon("OptionPane.warningIcon");
  290.             case 3:
  291.                return UIManager.getIcon("OptionPane.questionIcon");
  292.             default:
  293.                return null;
  294.          }
  295.       } else {
  296.          return null;
  297.       }
  298.    }
  299.  
  300.    protected int getInitialValueIndex() {
  301.       if (this.optionPane != null) {
  302.          Object var1 = this.optionPane.getInitialValue();
  303.          Object[] var2 = this.optionPane.getOptions();
  304.          if (var2 == null) {
  305.             return 0;
  306.          }
  307.  
  308.          if (var1 != null) {
  309.             for(int var3 = var2.length - 1; var3 >= 0; --var3) {
  310.                if (var2[var3].equals(var1)) {
  311.                   return var3;
  312.                }
  313.             }
  314.          }
  315.       }
  316.  
  317.       return -1;
  318.    }
  319.  
  320.    protected int getMaxCharactersPerLineCount() {
  321.       return this.optionPane.getMaxCharactersPerLineCount();
  322.    }
  323.  
  324.    public Dimension getMaximumSize(JComponent var1) {
  325.       return this.getPreferredSize(var1);
  326.    }
  327.  
  328.    protected Object getMessage() {
  329.       this.inputComponent = null;
  330.       if (this.optionPane != null) {
  331.          if (!this.optionPane.getWantsInput()) {
  332.             return this.optionPane.getMessage();
  333.          } else {
  334.             Object var1 = this.optionPane.getMessage();
  335.             Object[] var2 = this.optionPane.getSelectionValues();
  336.             Object var3 = this.optionPane.getInitialSelectionValue();
  337.             Object var4;
  338.             if (var2 != null) {
  339.                if (var2.length < 20) {
  340.                   JComboBox var5 = new JComboBox();
  341.                   int var6 = 0;
  342.  
  343.                   for(int var7 = var2.length; var6 < var7; ++var6) {
  344.                      var5.addItem(var2[var6]);
  345.                   }
  346.  
  347.                   if (var3 != null) {
  348.                      var5.setSelectedItem(var3);
  349.                   }
  350.  
  351.                   this.inputComponent = var5;
  352.                   var4 = var5;
  353.                } else {
  354.                   JList var8 = new JList(var2);
  355.                   JScrollPane var11 = new JScrollPane(var8);
  356.                   var8.setVisibleRowCount(10);
  357.                   if (var3 != null) {
  358.                      var8.setSelectedValue(var3, true);
  359.                   }
  360.  
  361.                   ((Component)var8).addMouseListener(new ListSelectionListener(this));
  362.                   var4 = var11;
  363.                   this.inputComponent = var8;
  364.                }
  365.             } else {
  366.                JTextField var9 = new JTextField(20);
  367.                if (var3 != null) {
  368.                   ((JTextComponent)var9).setText(var3.toString());
  369.                }
  370.  
  371.                var9.addActionListener(new TextFieldActionListener(this));
  372.                var4 = this.inputComponent = var9;
  373.             }
  374.  
  375.             Object[] var10;
  376.             if (var1 == null) {
  377.                var10 = new Object[]{var4};
  378.             } else {
  379.                var10 = new Object[]{var1, var4};
  380.             }
  381.  
  382.             return var10;
  383.          }
  384.       } else {
  385.          return null;
  386.       }
  387.    }
  388.  
  389.    public Dimension getMinimumOptionPaneSize() {
  390.       return this.minimumSize == null ? new Dimension(262, 90) : new Dimension(this.minimumSize.width, this.minimumSize.height);
  391.    }
  392.  
  393.    public Dimension getMinimumSize(JComponent var1) {
  394.       return this.getPreferredSize(var1);
  395.    }
  396.  
  397.    public Dimension getPreferredSize(JComponent var1) {
  398.       if ((JOptionPane)var1 == this.optionPane) {
  399.          Dimension var2 = this.getMinimumOptionPaneSize();
  400.          LayoutManager var3 = ((Container)var1).getLayout();
  401.          if (var3 != null) {
  402.             Dimension var4 = var3.preferredLayoutSize(var1);
  403.             return var2 != null ? new Dimension(Math.max(var4.width, var2.width), Math.max(var4.height, var2.height)) : var4;
  404.          } else {
  405.             return var2;
  406.          }
  407.       } else {
  408.          return null;
  409.       }
  410.    }
  411.  
  412.    protected boolean getSizeButtonsToSameWidth() {
  413.       return true;
  414.    }
  415.  
  416.    protected void installComponents() {
  417.       this.optionPane.add(this.createMessageArea());
  418.       Container var1 = this.createSeparator();
  419.       if (var1 != null) {
  420.          this.optionPane.add(var1);
  421.       }
  422.  
  423.       this.optionPane.add(this.createButtonArea());
  424.    }
  425.  
  426.    protected void installDefaults() {
  427.       LookAndFeel.installColorsAndFont(this.optionPane, "OptionPane.background", "OptionPane.foreground", "OptionPane.font");
  428.       LookAndFeel.installBorder(this.optionPane, "OptionPane.border");
  429.       this.minimumSize = UIManager.getDimension("OptionPane.minimumSize");
  430.       this.optionPane.setOpaque(true);
  431.    }
  432.  
  433.    protected void installKeyboardActions() {
  434.       this.optionPane.registerKeyboardAction(new 1(this), KeyStroke.getKeyStroke(27, 0), 2);
  435.    }
  436.  
  437.    protected void installListeners() {
  438.       if ((this.propertyChangeListener = this.createPropertyChangeListener()) != null) {
  439.          this.optionPane.addPropertyChangeListener(this.propertyChangeListener);
  440.       }
  441.  
  442.    }
  443.  
  444.    public void installUI(JComponent var1) {
  445.       this.optionPane = (JOptionPane)var1;
  446.       this.installDefaults();
  447.       this.optionPane.setLayout(this.createLayoutManager());
  448.       this.installComponents();
  449.       this.installListeners();
  450.       this.installKeyboardActions();
  451.    }
  452.  
  453.    protected void resetInputValue() {
  454.       if (this.inputComponent != null && this.inputComponent instanceof JTextField) {
  455.          this.optionPane.setInputValue(((JTextField)this.inputComponent).getText());
  456.       } else if (this.inputComponent != null && this.inputComponent instanceof JComboBox) {
  457.          this.optionPane.setInputValue(((JComboBox)this.inputComponent).getSelectedItem());
  458.       } else if (this.inputComponent != null) {
  459.          this.optionPane.setInputValue(((JList)this.inputComponent).getSelectedValue());
  460.       }
  461.  
  462.    }
  463.  
  464.    public void selectInitialValue(JOptionPane var1) {
  465.       if (this.inputComponent != null) {
  466.          this.inputComponent.requestFocus();
  467.       } else {
  468.          if (this.initialFocusComponent != null) {
  469.             this.initialFocusComponent.requestFocus();
  470.          }
  471.  
  472.          if (this.initialFocusComponent instanceof JButton) {
  473.             JRootPane var2 = SwingUtilities.getRootPane(this.initialFocusComponent);
  474.             if (var2 != null) {
  475.                var2.setDefaultButton((JButton)this.initialFocusComponent);
  476.             }
  477.          }
  478.       }
  479.  
  480.    }
  481.  
  482.    protected void uninstallComponents() {
  483.       this.hasCustomComponents = false;
  484.       this.inputComponent = null;
  485.       this.initialFocusComponent = null;
  486.       this.optionPane.removeAll();
  487.    }
  488.  
  489.    protected void uninstallDefaults() {
  490.       LookAndFeel.uninstallBorder(this.optionPane);
  491.    }
  492.  
  493.    protected void uninstallKeyboardActions() {
  494.       this.optionPane.unregisterKeyboardAction(KeyStroke.getKeyStroke(27, 0));
  495.    }
  496.  
  497.    protected void uninstallListeners() {
  498.       if (this.propertyChangeListener != null) {
  499.          this.optionPane.removePropertyChangeListener(this.propertyChangeListener);
  500.          this.propertyChangeListener = null;
  501.       }
  502.  
  503.    }
  504.  
  505.    public void uninstallUI(JComponent var1) {
  506.       this.uninstallComponents();
  507.       this.optionPane.setLayout((LayoutManager)null);
  508.       this.uninstallKeyboardActions();
  509.       this.uninstallListeners();
  510.       this.uninstallDefaults();
  511.       this.optionPane = null;
  512.    }
  513. }
  514.